Nell'architettura di sistemi C++ su larga scala, definire una struttura formale struct per ogni raggruppamento temporaneo di dati è spesso eccessivo. La std::tuple funge da contenitore eterogeneo, generalizzando std::pair per contenere un numero arbitrario di tipi diversi.
1. Costruzione e Vincoli
A differenza dei contenitori standard, il tuple costruttore è esplicito. Non puoi usare l'inizializzazione tramite copia con una lista; devi usare l'inizializzazione diretta o std::make_tuple.
tuple<int, double> t2 = {1, 2.5}; // Errore!
2. Accesso e Introspezione
I membri sono accessibili tramite get<i>(nome_tuple), dove i deve essere un'espressione costante nota al momento della compilazione. I metadati possono essere interrogati tramite tuple_size e tuple_element usando decltype.
3. Logica Relazionale
Le tuple sono confrontate lessicograficamente. Il confronto è valido solo se entrambe le tuple hanno lo stesso numero di elementi e i rispettivi tipi supportano gli operatori relazionali.